# Makefile for MinGW on Windows
CC = gcc
FC = g95

FFLAGS = -O2 -fbounds-check -Wall -Wno-precision-loss -fno-second-underscore
CFLAGS = -I. -fbounds-check

# Default rules
%.o: %.c
	${CC} ${CFLAGS} -c $<
%.o: %.f
	${FC} ${FFLAGS} -c $<
%.o: %.F
	${FC} ${FFLAGS} -c $<
%.o: %.f90
	${FC} ${FFLAGS} -c $<
%.o: %.F90
	${FC} ${FFLAGS} -c $<

all:    libm65.a m65.exe JT65code.exe

OBJS1 = trimlist.o display.o getdphi.o pctile.o ccf65.o \
	decode1a.o sort.o filbig.o fil6521.o afc65b.o \
	twkfreq.o decode65b.o indexx.o ssort.o fchisq.o setup65.o \
	extract.o deep65.o ccf2.o demod64a.o chkhist.o graycode.o \
	interleave63.o unpackmsg.o encode65.o igray.o set.o unpackcall.o \
	unpackgrid.o grid2k.o unpacktext.o getpfx2.o packmsg.o \
	deg2grid.o packtext.o getpfx1.o packcall.o k2grid.o packgrid.o \
	wrapkarn.o nchar.o init_rs.o encode_rs.o decode_rs.o \
	four2a.o rfile3a.o grid2deg.o pfxdump.o dpol.o \
	astro.o tm2.o sun.o moondop.o coord.o tmoonsub.o \
	geocentric.o moon2.o toxyz.o dot.o dcoord.o f77_wisdom.o \
	gen65.o chkmsg.o ptt.o astrosub.o astro0.o recvpkt.o symspec.o \
	iqcal.o iqfix.o

libm65.a: $(OBJS1)
	ar cr libm65.a $(OBJS1) 
	ranlib libm65.a

OBJS3 = m65.o m65a.o map65a.o symspec.o decode0.o ftninit.o ftnquit.o \
	timer.o ipcomm.o sec_midn.o cutil.o 
LIBS3    = -L'c:/QtSDK/Desktop/Qt/4.7.4/mingw/lib' -lQtCore4

m65.exe: $(OBJS3) libm65.a
	g++ -o m65.exe $(OBJS3) $(LIBS3) libm65.a ../libfftw3f_win.a \
	c:/MinGW/lib/libf95.a
	cp m65.exe ../../install

OBJS2 = JT65code.o
JT65code.exe: $(OBJS2) libm65.a
	$(FC) -o JT65code.exe $(OBJS2) libm65.a

INCPATH = -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/QtCore' \
	 -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include' \
	 -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/include/ActiveQt' \
	 -I'release' -I'.' -I'c:/QtSDK/Desktop/Qt/4.7.4/mingw/mkspecs/win32-g++'
ipcomm.o: ipcomm.cpp
	g++ -c $(INCPATH) ipcomm.cpp

#m65a.o:	m65a.f90
#	$(FC) -c -fno-second-underscore -cpp m65a.f90

sec_midn.o: sec_midn.f90
	$(FC) -c -fno-second-underscore sec_midn.f90

#symspec.o: ../symspec.f90
#	$(FC) -c $(FFLAGS) -o symspec.o ../symspec.f90

OBJS4 = tastro.o astro0.o libm65.a
tastro.exe: $(OBJS4)
	$(FC) $(FFLAGS) -o tastro.exe $(OBJS4) libm65.a 

OBJS5 = t1.o timer.o libm65.a
t1.exe: $(OBJS5)
	$(FC) $(FFLAGS) -o t1.exe $(OBJS5) libm65.a 

#astro0.o: ../astro0.f90
#	$(FC) -c $(FFLAGS) -o astro0.o ../astro0.f90

init_rs.o: init_rs.c
	$(CC) -c -DBIGSYM=1 -o init_rs.o init_rs.c

encode_rs.o: encode_rs.c
	$(CC) -c -DBIGSYM=1 -o encode_rs.o encode_rs.c

decode_rs.o: decode_rs.c
	$(CC) -c -DBIGSYM=1 -o decode_rs.o decode_rs.c

.PHONY : clean

clean:
	rm -f *.o libm65.a m65.exe jt65code.exe
